import java.rmi.*;
import java.rmi.registry.*;
import java.rmi.server.*;
import java.net.*;



public class RmiServer extends java.rmi.server.UnicastRemoteObject
implements ReceiveMessageInterface
{
    int      thisPort;
    String   thisAddress;
    Registry registry;

    // rmi registry for lookup the remote objects
    // This method is called from the remote client by the RMI.
    // This is the implementation of the “ReceiveMessageInterface”.

    public void receiveMessage(String x) throws RemoteException
    {
        System.out.println(x);
    }



    public RmiServer() throws RemoteException
    {
        try{
            // get the address of this host.
            thisAddress= (InetAddress.getLocalHost()).toString();
        }

        catch(Exception e){
            throw new RemoteException("can't get inet address.");
        }

        thisPort=3232;  // this port(registry’s port)
        System.out.println("this address="+thisAddress+",port="+thisPort);

        try{
        // create the registry and bind the name and object.
        registry = LocateRegistry.createRegistry(thisPort);
            registry.rebind("rmiServer", this);
        }

        catch(RemoteException e){
        throw e;
        }
    }

    static public void main(String args[])
    {
        try{
            RmiServer s=new RmiServer();
        }
        catch (Exception e) {
           e.printStackTrace();
           System.exit(1);
        }
    }
}